1. Field of the Invention
The present invention relates to data communication and timing systems and, more particularly, to data communication and timing systems using codes with coding boundaries that vary according to a dithering pattern.
2. Description of the Related Art
Pseudonoise (PN) codes, also known as pseudorandom codes, have good autocorrelation properties and are ideal for measuring the time-of-arrival of a signal, and hence, for use in ranging applications. A high coding gain is achieved when a receiver correlates the code, such as a PN code, for a long time. Accordingly, long PN codes have been used to provide high coding gain.
An example of using a long PN code is in the Global Positioning System (GPS). GPS is a satellite-based navigation system in which each satellite in the GPS constellation transmits a unique precision (P) code. Each P code is a very long PN code that has a period of one week, and hence, repeats only once per week. The P code provides for a high gain correlation signal that allows a receiver to acquire precise timing information, and hence, precise ranging information between the receiver and satellite. To acquire the P code signal a receiver must determine the phase of the received P code. However, because the P code is so long it is difficult for a receiver to determine its phase. If a receiver includes a very accurate clock, such as an atomic clock, it might stay synchronized with the transmitter's clock and could therefore generate a local reference P code that is nearly in-phase with the received P code. But this would require an expensive, complex and unwieldy receiver. Even with a very accurate and stable clock frequency, there is the problem of initially setting the correct time of day. This requires testing all of the code phases that span the range of the time uncertainty. Theoretically a receiver could include enough correlators to test each phase of the P code simultaneously to detect its phase, but in practice that a solution would not be feasible because of the extremely large number of correlators required due to the length of the P code. A receiver also, theoretically, uses a practical number of correlators and test the possible phases of the P code sequentially. However, this would take a long time due to the length of the P code.
The GPS system uses another technique to acquire the P code. It uses a second signal, known as the course acquisition (C/A) signal, to determine initial timing information, then uses that timing information to assist in detecting the phase of the P code. The C/A signal is a much shorter code of 1023 symbols and repeats approximately every millisecond. Accordingly, the CIA code can be detected quickly, either by using a bank of correlators to test each possible phase of the code, or by testing the phases in sequence. However, the C/A code can provide timing only within a one millisecond interval (one interval cannot be distinguished from another), and thus, by itself, cannot resolve all of the time uncertainty (typically a few seconds). But once a GPS receiver acquires the C/A signal, it can determine enough timing information to limit the P code search to specific phases of the P code to speed its acquisition of the P code. However, using one code to help acquire a longer code, such as in the GPS system, requires that the transmitter generate and transmit two signals and that a receiver be able to receive and detect both signals.
Accordingly, there is a need to generate and transmit a long code with good autocorrelation characteristics that can be acquired quickly by using a feasible number of correlators and without requiring another signal that provides timing information.
A conventional spread-spectrum communications system, such as the GPS system, is shown in FIG. 1. The system of FIG. 1 includes a transmitter 1 and a receiver 9. The transmitter includes a PN code generator 2 that is driven by a timing counter 3 and both are run based on a clock oscillator 4. The PN code generated by generator 2 is modulated with a carrier signal via modulator 5 which is driven by carrier oscillator 6. Optionally, data can be superimposed onto the code and carrier by using a modulo 2 adder 7. The transmitter 1 transmits the modulated carrier via antenna 8 to a receiver 9.
Receiver 9 receives the transmitted signal via an antenna 10 that provides the received signal to a demodulator 11. The demodulator 11 is driven by a carrier oscillator 12, and produces two signals out-of-phase by 90°. Those signals are designated as in-phase (I) and quadrature(Q) signals. These two out-of-phase signals are provided to a group of parallel correlators 13. The parallel correlators can include as many, and even more, correlators as the number of phases of the code to be tested. For example, if the code length is 1023 symbols, or chips, the parallel correlators 13 can consist of 1023 correlators, one correlator for each possible phase of the code. Multiple banks of the parallel correlators 13 can be used to correlate different signals, such as in this case where one bank correlates the I-signals and another bank correlates the Q-signals. The parallel correlators 13 are also provided with PN reference codes that correspond to the PN codes generated in the transmitter. PN code generator 14 generates the reference codes. The reference codes can be delayed to correspond to the various phases to be tested. Alternatively, the input signals, here the I and Q signals, can be delayed with various delays and correlated with a single PN code to test the different phases. The PN code generator 14 is driven by a local clock oscillator 15 and timing counters 16 which can effect the different timings for the PN reference codes. The local clock oscillator also drives timing counters 16.
Many different types of PN code generators can be used in spread-spectrum systems such as that shown in FIG. 1. A small scale example of one such conventional PN code generator is shown in detail in FIG. 2. The PN code generator of FIG. 2 includes a shift register 20 and a modulo-2 adder 21. In this example, the shift register is three bits long, although longer lengths are usually used. The three flip-flops of shift register 20 are synchronously driven by a clock signal. Modulo-2 adder 21 adds the first and third bits of the shift register, and inserts the result into the first position of register 20 while all bits are shifted to the right by one position. Starting with any pattern other than all zeros in the register, repeating this operation once for each clock pulse produces an output pattern, shown in FIG. 3B, that repeats every seven bits. In this manner, a maximal-length PN sequence is produced.
A sequence of PN codes is shown in FIGS. 3A and B. The sequence in FIG. 3A shows the symbol positions in a 7-symbol PN code, with the symbol positions labeled 0 through 6. FIG. 3B shows the symbol values, where the symbols are bits, and the code is “0010111.” Here, the code repeats regularly without variation in code length or phase, and hence, a receiver cannot discriminate one instance of the code from another.
These conventional transmitters, receivers and code generators suffer from the problems described above and are unable to generate a long code that can be received quickly and inexpensively, without the aid of a second timing signal. Accordingly, there is also a need for a generator and transmitter that can produce a long code with good autocorrelation properties, yet can be acquired quickly and inexpensively without the need for first detecting a second timing signal.